最近用Laravel + js框架部屬在學校的Linux apache的子網域
但因為Laravel + js框架使用的是設定好的mix方式打包,在路徑改變導致了不少麻煩
在這邊紀錄一下遇到的問題以及自己的解決辦法:
通常子使用者的home底下會有public_html資料夾
把專案複製貼在home後,把public裡的東西全部複製到public_html裡面
(或是改伺服器預設的位置,不過學校的伺服器不方便我做更改)
網頁的網址會在
網域名/~子使用者名稱/index.php
解決辦法可以參考這篇
能使用775就用775,777比較危險。
將 resources/views/index.blade.php 中的
<script src="{{ mix('js/app.js') }}"></script>
改成
<script src="{{ asset(mix('/js/app.js')) }}"></script>
因為使用subdomain,Laravel提供api的url也會跟著改變,但Js的local仍然是沒有加入子網域的路徑。
假設原本的路徑為
/api/get/data
上面的路徑會回傳404,必須改成下面這樣,要加入首頁的路徑:
/~子使用者名稱/index.php/api/get/data
處理方法類似4,比較特別的是如果是使用hashRouter
假設原本的路徑為
/#/home
必須改成下面這樣,注意在index.php的後面是直接加井字號:
/~子使用者名稱/index.php#/home
這個比較特別,我目前使用的方式是在打包後
直接去public_html資料夾(或是public)修改app.js
CTRL+F搜尋/images
全部改成/~子使用者名稱/images
雖然這個方法有效,但我不確定是否有更好的方法。